In many areas of technology, including but not limited to areas of signal processing such as undersea acoustic signal processing, wireless communications, and image processing. One well-known technique for solving such problems is the use of QR-decomposition (QRD). QR decomposition of a matrix is a decomposition of the matrix into an orthogonal matrix, Q and an upper triangular matrix, R. QR decomposition is often used to solve the linear least squares problem.
An information bearing signal such as a communications signal, sonar signal, or target radar signal, contains multiple signal components. Received signals carry relevant information useful for communications and detection of sources (e.g. targets), such as radar or sonar signals. However, in addition to the useful information carried by a received signal, clutter and/or noise signals embedded within the overall received signal tend to interfere with and reduce the likelihood of detection and/or degrade the quality of the useful information signal to be recovered. Clutter or noise may originate from extraneous energy sources, or may result from interference between multiple useful signals.
It is important to separate the useful signals from the clutter and noise in the overall received signal. Once useful signals are identified and located, receive antenna beams may be weighted to direct energy to the location of the target sources and mitigate the effects of interference and other electromagnetic phenomena (e.g. side lobes).
One method of separating noise from a useful (target) signal is by implementing a modified Gram Schmidt (MGS) algorithm for performing a QR decomposition (QRD). The MGS QRD utilizes signal information such as signal data from a radar receiver in the format of an m×n input matrix A, and factorizes A into an orthogonal matrix Q, and an upper triangular matrix R. The QRD is a numerically stable technique that is well suited for the computation of the least squares error estimates for an unknown and finite impulse response by minimizing the total squared error between the desired signal and the actual received signal over a certain time period.
The MGS QRD is useful for identifying a target signal contained in an overall received signal, and requires fewer operations to perform the decomposition than other approaches (such as Householder reflection or Givens rotation). However, the MGS approach requires a significant number of floating point operations. It is necessary to use floating point values to maintain the decimal accuracy of the MGS QRD. FPGA implementations, however, generally are limited to fixed point arithmetic operations which introduce rounding errors resulting in a loss of accuracy and ultimately the orthogonality of Q.
An MGS-QRD is conventionally implemented using multiple processor cards to provide the floating point arithmetic operations needed to compute the MGS algorithm, with the calculation results then passed to the MGS core. The complex mathematical operations for floating point complex numbers are too intensive to be incorporated within hardware devices alone and are meted out to software modules. The software modules direct the calculations to a separate processor better suited for performing floating point calculations. However, such an implementation and processing with software is typically achieved at the expense of decreased processing speed (relative to purely hardware implementations). Alternative techniques for implementation of an MGS QRD within a single FPGA using floating point arithmetic operations are desired.